/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dbwrapper;

import java.io.FileReader;
import java.io.IOException;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

/**  
 * Подучение настрок подключения к базе данных из xml
 * @author alexxxey
 */
public class DbConfig extends DefaultHandler
{    
    public DbConfig(String configFileName) throws SAXException, IOException 
    {
        // Создаем парсер 
        final XMLReader xr = XMLReaderFactory.createXMLReader();
        
        // Настраиваем обработчик событий разбора
        xr.setContentHandler(this);
        
        // Настраиваем обработчик ошибок разбора
        xr.setErrorHandler(this);

        xr.parse(new InputSource(new FileReader(configFileName)));
    }
    
    // Обработчики событий разбора  
    @Override
    public void startElement(String uri, String localName, String qName, 
                org.xml.sax.Attributes attributes) throws SAXException 
    {

        if (qName.equals("database")) 
        {
            this.m_dataBaseFile = attributes.getValue("key");
        }
        else if (qName.equals("encoding")) 
        {
            this.m_encoding = attributes.getValue("key");
        }
        else if (qName.equals("login_timeout")) 
        {
            this.m_loginTimeout = Integer.parseInt(attributes.getValue("key"));
        }
        else if (qName.equals("connection_type")) 
        {
            this.m_connectionType = attributes.getValue("key");
        }
        else if (qName.equals("username")) 
        {
            this.m_username = attributes.getValue("key");
        } 
        else if (qName.equals("password")) 
        {
            this.m_password = attributes.getValue("key");
        }
    }

    public String getDatabaseSource() { return this.m_dataBaseFile; }
    public String getEncoding() {return this.m_encoding; }
    public int getLoginTimeout() { return this.m_loginTimeout; }
    public String getConnectionType() { return this.m_connectionType; }
    public String getUsername() { return this.m_username; }
    public String getPassword() { return this.m_password; }
    
    private String m_dataBaseFile;
    private String m_encoding;
    private int m_loginTimeout;
    private String m_connectionType;
    private String m_username;
    private String m_password;
}
